import axios from "axios";
import { ElMessage } from "element-plus";

console.log("Base URL:", import.meta.env.VITE_BASE_URL); 
const request = axios.create({
   // 后端的port
//    baseURL: "http://localhost:9090",
   // 一个语法import.meta.env.
   baseURL: import.meta.env.VITE_BASE_URL,
   
   // 后端请求超时时间
   timeout: 30000,
   
});

// 请求拦截器 之前就做好了 直接搬
// request 拦截器
// 可以自请求发送前对请求做一些处理
request.interceptors.request.use(config => {
    console.log("Request Base URL:", config.baseURL);
   config.headers['Content-Type'] = 'application/json;charset=utf-8';
//    拿到缓存的信息 转化为JSON 
   let user = JSON.parse(localStorage.getItem("xm-user") || '{}')
//    前端axios请求头携带缓存的token
   config.headers['token'] = user.token || ''
   return config
}, error => {
   return Promise.reject(error)
});

// response 拦截器
// 可以在接口响应后统一处理结果
request.interceptors.response.use(

   response => {
      // 拿到后台返回结果
       let res = response.data;
       // 如果是返回的文件
       if (response.config.responseType === 'blob') {
           return res
       }
    //    在权限验证不通过时候给出提示
       if(res.code === '401'){
        ElMessage.error(res.msg)
        router.push('/login')
       }
       // 兼容服务端返回的字符串数据
       if (typeof res === 'string') {
           res = res ? JSON.parse(res) : res
       }
       return res;
   },
   error => {
       if (error.response.status === 404) {
           ElMessage.error('未找到请求接口')
       } else if (error.response.status === 500) {
           ElMessage.error('系统异常，请查看后端控制台报错')
       } else {
           console.error(error.message)
       }
       return Promise.reject(error)
   }
)
// 导出
export default request